/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.general.be;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.cip.esymons.colegiatura.be.DerechosAutor;
//import org.cip.esymons.colegiatura.be.EstudioColegiado;
import org.cip.esymons.colegiatura.be.FormacionProfesional;

/**
 *
 * @author ADMINISTRADOR
 */
@Entity
@Table(name = "gen_especialidad")
@NamedQueries({@NamedQuery(name = "Especialidad.findAll", query = "SELECT e FROM Especialidad e"), @NamedQuery(name = "Especialidad.findByEspCodigo", query = "SELECT e FROM Especialidad e WHERE e.espCodigo = :espCodigo"), @NamedQuery(name = "Especialidad.findByEspDescripcion", query = "SELECT e FROM Especialidad e WHERE e.espDescripcion = :espDescripcion"), @NamedQuery(name = "Especialidad.findByEspActivo", query = "SELECT e FROM Especialidad e WHERE e.espActivo = :espActivo")})
public class Especialidad implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "esp_codigo")
    private Integer espCodigo;
    @Basic(optional = false)
    @Column(name = "esp_descripcion")
    private String espDescripcion;
    @Basic(optional = false)
    @Column(name = "esp_activo")
    private int espActivo;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "espCodigo", fetch = FetchType.LAZY)
    private List<DerechosAutor> derechosAutorCollection;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "espCodigo", fetch = FetchType.LAZY)
    private List<EspecialidadCapitulo> especialidadCapituloCollection;

    @JoinColumn(name = "esc_codigo", referencedColumnName = "esc_codigo")
    @ManyToOne(fetch = FetchType.LAZY)
    private Escuela escuela;

    @OneToMany(mappedBy = "espCodigo", fetch = FetchType.LAZY)
    private List<Titulo> tituloCollection;

//    @OneToMany(cascade = CascadeType.ALL, mappedBy = "especial", fetch = FetchType.LAZY)
//    private List<EstudioColegiado> estudioColegiadoCollection;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "espCodigo", fetch = FetchType.LAZY)
    private List<FormacionProfesional> formacionProfesionalCollection;


    @Transient
    boolean estado;

    public boolean isEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        if(estado){
            espActivo=1;
        }
        else{
            espActivo=0;
        }
        this.estado = estado;
    }

    public Especialidad() {
    }

    public Especialidad(Integer espCodigo) {
        this.espCodigo = espCodigo;
    }

    public Especialidad(Integer espCodigo, String espDescripcion, int espActivo, String espTitulo) {
        this.espCodigo = espCodigo;
        this.espDescripcion = espDescripcion;
        this.espActivo = espActivo;     
    }

    public Integer getEspCodigo() {
        return espCodigo;
    }

    public void setEspCodigo(Integer espCodigo) {
        this.espCodigo = espCodigo;
    }

    public String getEspDescripcion() {
        return espDescripcion;
    }

    public void setEspDescripcion(String espDescripcion) {
        this.espDescripcion = espDescripcion;
    }

    public int getEspActivo() {
        return espActivo;
    }

    public void setEspActivo(int espActivo) {
        this.espActivo = espActivo;
    }

    public List<DerechosAutor> getDerechosAutorCollection() {
        return derechosAutorCollection;
    }

    public void setDerechosAutorCollection(List<DerechosAutor> derechosAutorCollection) {
        this.derechosAutorCollection = derechosAutorCollection;
    }

    public List<EspecialidadCapitulo> getEspecialidadCapituloCollection() {
        return especialidadCapituloCollection;
    }

    public void setEspecialidadCapituloCollection(List<EspecialidadCapitulo> especialidadCapituloCollection) {
        this.especialidadCapituloCollection = especialidadCapituloCollection;
    }

    public Escuela getEscuela() {
        return escuela;
    }

    public void setEscuela(Escuela escuela) {
        this.escuela = escuela;
    }

    public List<FormacionProfesional> getFormacionProfesionalCollection() {
        return formacionProfesionalCollection;
    }

    public void setFormacionProfesionalCollection(List<FormacionProfesional> formacionProfesionalCollection) {
        this.formacionProfesionalCollection = formacionProfesionalCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (espCodigo != null ? espCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Especialidad)) {
            return false;
        }
        Especialidad other = (Especialidad) object;
        if ((this.espCodigo == null && other.espCodigo != null) || (this.espCodigo != null && !this.espCodigo.equals(other.espCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.general.be.Especialidad[espCodigo=" + espCodigo + "]";
    }

    /**
     * @return the tituloCollection
     */
    public List<Titulo> getTituloCollection() {
        return tituloCollection;
    }

    /**
     * @param tituloCollection the tituloCollection to set
     */
    public void setTituloCollection(List<Titulo> tituloCollection) {
        this.tituloCollection = tituloCollection;
    }

}
